<% Head() Server.ScriptTimeOut=9999999 dim admin_flag admin_flag="24,25" if not Dvbbs.master or instr(","&session("flag")&",",",24,")=0 or instr(","&session("flag")&",",",25,")=0 then Errmsg=ErrMsg + "
  • 本页面为管理员专用,请登录后进入。
  • 您没有管理本页面的权限。" dvbbs_error() else if request("action")="Nowused" then call nowused() elseif request("action")="update" then call update() elseif request("action")="del" then call del() elseif request("action")="CreatTable" then call creattable() elseif request("action")="search" then call search() elseif request("action")="update2" then call update2() elseif request("action")="update3" then call update3() else call main() end if Footer() end if sub main() %>
    说明
    您可以选择下列其中之一种模式进行帖子数据在不同表之间的转换。
    模式一:搜索要转移的帖子
    搜索条件    用户 主题 
    注意:这里仅搜索所在表的主题和发表用户数据,搜索后对搜索结果进行操作
    模式二:在不同表转移数据
      条 记录转移到  
    注意:最前N条记录指数据库中最早发表的帖子(如果平均每个帖子有5个回复,那么100个主题在这里的更新量将是500条记录),这通常要花很长的时间,更新的速度取决于您的服务器性能以及更新数据的多少。执行本步骤将消耗大量的服务器资源,建议您在访问人数较少的时候或者本地进行更新操作。
    <% end sub sub nowused() %>
    <% for i=0 to ubound(AllPostTable) %> <% next %>
    说明
    下列数据表中选中的为当前论坛所使用来保存帖子数据的表,一般情况下每个表中的数据越少论坛帖子显示速度越快,当您下列单个帖子数据表中的数据有超过几万的帖子时不妨新添一个数据表来保存帖子数据(SQL版本用户建议每个表数据达到20万以后进行添加表操作),您会发现论坛速度快很多很多。
    您也可以将当前所使用的数据表在下列数据表中切换,当前所使用的帖子数据表即当前论坛用户发贴时默认的保存帖子数据表
    当前数据表设定
    表名 说明 当前帖数 当前默认 删除
    <%=AllPostTable(i)%> <%=AllPostTableName(i)%> <% set rs=Dvbbs.Execute("select count(*) from "&AllPostTable(i)&"") response.write rs(0) %> checked<%end if%>> 删除
    添加数据表
    添加的表名  只能用Dv_bbs+数字表示,如Dv_bbs5,最后的数字最多不能超过9
    添加表的说明  简单描述该表的用途,在搜索帖子和其他相关操作部分显示
    <% end sub sub update() Dvbbs.Execute("update Dv_setup set Forum_NowUseBBS='"&request.form("TableName")&"'") Dvbbs.loadSetup() Dv_suc("更新成功!") end sub sub del() dim nAllPostTable,nAllPostTableName,ii if Trim(request("tablename"))=Trim(Dvbbs.NowUseBBS) then Errmsg=ErrMsg + "
  • 当前正在使用的表不能删除。" dvbbs_error() exit sub end if Dvbbs.Execute("delete from dv_Tablelist where TableName='"&Trim(request("TableName"))&"'") Dvbbs.Execute("drop table "&request("tablename")&"") Dvbbs.Execute("delete from dv_BestTopic where RootID in (select TopicID from dv_topic where PostTable='"&request("tablename")&"')") Dvbbs.Execute("delete from dv_Topic where PostTable='"&request("tablename")&"'") Dv_suc("删除成功!") end sub sub CreatTable() if request.form("tablename")="" then Errmsg=ErrMsg + "
  • 请输入表名。" dvbbs_error() exit sub elseif len(request.form("tablename"))<>7 then Errmsg=ErrMsg + "
  • 输入的表名不合法。" dvbbs_error() exit sub elseif not isnumeric(right(request.form("tablename"),1)) then Errmsg=ErrMsg + "
  • 输入的表名不合法。" dvbbs_error() exit sub elseif cint(right(request.form("tablename"),1))>9 or cint(right(request.form("tablename"),1))<0 then Errmsg=ErrMsg + "
  • 输入的表名不合法。" dvbbs_error() exit sub end if if request.form("tablereadme")="" then Errmsg=ErrMsg + "
  • 请输入表的说明。" dvbbs_error() exit sub end if for i=0 to ubound(AllPostTable) if AllPostTable(i)=request.form("tablename") then Errmsg=ErrMsg + "
  • 您输入的表名已经存在,请重新输入。" dvbbs_error() exit sub end if next Dim NewAllPostTable,NewAllPostTableName '更新数据表列表 Dvbbs.Execute("insert into dv_TableList(TableName,TableType)Values('"&request.form("tablename")&"','"&request.form("tablereadme")&"') ") 'NewAllPostTable=rs(0) & "|" & request.form("tablename") 'NewAllPostTableName=rs(1) & "|" & request.form("tablereadme") 'Set conn = Server.CreateObject("ADODB.connection") 'connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("dvbbs5.mdb") 'conn.open connstr '建立新表 If IsSqlDataBase=1 Then sql="CREATE TABLE ["&request.form("tablename")&"] (AnnounceID int IDENTITY (1, 1) NOT NULL CONSTRAINT PK_"&request.form("tablename")&" PRIMARY KEY,"&_ "ParentID int default 0,"&_ "BoardID int default 0,"&_ "UserName varchar(50),"&_ "PostUserID int default 0,"&_ "Topic varchar(250),"&_ "Body text,"&_ "DateAndTime smalldatetime default "&SqlNowString&","&_ "length int Default 0,"&_ "RootID int Default 0,"&_ "layer int Default 0,"&_ "orders int Default 0,"&_ "isbest tinyint Default 0,"&_ "ip varchar(40) NULL,"&_ "Expression varchar(100) NULL,"&_ "locktopic int Default 0,"&_ "signflag tinyint Default 0,"&_ "emailflag tinyint Default 0,"&_ "isagree varchar(50) NULL,"&_ "isupload tinyint default 0,"&_ "isaudit tinyint default 0,"&_ "PostBuyUser text,"&_ "UbbList varchar(255),"&_ "GetMoney int not null Default 0,"&_ "UseTools varchar(255),"&_ "GetMoneyType tinyint not null Default 0"&_ ")" Else sql="CREATE TABLE "&request.form("tablename")&" (AnnounceID int IDENTITY (1, 1) NOT NULL CONSTRAINT PrimaryKey PRIMARY KEY,"&_ "ParentID int default 0,"&_ "BoardID int default 0,"&_ "UserName varchar(50),"&_ "PostUserID int default 0,"&_ "Topic varchar(250),"&_ "Body text,"&_ "DateAndTime smalldatetime default Now(),"&_ "length int Default 0,"&_ "RootID int Default 0,"&_ "layer int Default 0,"&_ "orders int Default 0,"&_ "isbest tinyint Default 0,"&_ "ip varchar(40) NULL,"&_ "Expression varchar(100) NULL,"&_ "locktopic int Default 0,"&_ "signflag tinyint Default 0,"&_ "emailflag tinyint Default 0,"&_ "isagree varchar(50) NULL,"&_ "isupload tinyint default 0,"&_ "isaudit tinyint default 0,"&_ "PostBuyUser text,"&_ "UbbList varchar(255),"&_ "GetMoney int not null Default 0,"&_ "UseTools varchar(255),"&_ "GetMoneyType tinyint not null Default 0"&_ ")" End If Dvbbs.Execute(sql) '添加索引 Dvbbs.Execute("create index dispbbs on "&request.form("tablename")&" (boardid,rootid)") Dvbbs.Execute("create index save_1 on "&request.form("tablename")&" (rootid,orders)") Dvbbs.Execute("create index disp on "&request.form("tablename")&" (boardid)") Dvbbs.Execute("create index PostUserID on "&request.form("tablename")&" (PostUserID)") 'Dvbbs.Execute("update config set AllPostTable='"&NewAllPostTable&"',AllPostTableName='"&NewAllPostTableName&"'") Dv_suc("添加表成功,请返回。") end sub '模式2更新 sub update2() dim trs dim ForNum,TopNum Dim orderby,PostUserID if request.form("outtablename")=request.form("intablename") then Errmsg=ErrMsg + "
  • 不能在相同数据表内转移数据。" dvbbs_error() exit sub end if if (not isnumeric(request.form("selnum"))) or request.form("selnum")="" then Errmsg=ErrMsg + "
  • 请填写正确的更新数量。" dvbbs_error() exit sub end if if request.form("TopOrEnd")="Top" then 'shinzeal edit this to TopOrEnd in 2004/7/4 orderby="" else orderby=" desc" end if TopNum=Clng(request.form("selnum")) if TopNum>100 then ForNum=int(TopNum/100)+1 TopNum=100 else ForNum=1 end if Dim C1 C1=TopNum %>  
    下面开始转移论坛帖子资料,预计本次共有<%=C1%>个帖子需要更新
    0%
    <% Response.Flush dim myrs,maxannid for i=1 to ForNum set rs=Dvbbs.Execute("select top "&TopNum&" topicid,title from dv_topic where PostTable='"&request.form("outtablename")&"' order by topicid "&orderby&"") if rs.eof and rs.bof then Errmsg=ErrMsg + "
  • 您所选择导出的数据表已经没有任何内容" dvbbs_error() exit sub else do while not rs.eof '读取导出帖子数据表 set trs=Dvbbs.Execute("select * from "&request.form("outtablename")&" where rootid="&rs("topicid")&" order by Announceid") if not (trs.eof and trs.bof) then do while not trs.eof '插入导入帖子数据表 If IsNull(trs("postuserid")) Or trs("postuserid")="" Then PostUserID=0 Else PostUserID=trs("postuserid") End If Dvbbs.Execute("insert into "&request("intablename")&"(Boardid,ParentID,username,topic,body,DateAndTime,length,rootid,layer,orders,ip,Expression,locktopic,signflag,emailflag,isbest,PostUserID,isagree,isupload,isaudit,PostBuyUser,UbbList) values ("&trs("boardid")&","&trs("parentid")&",'"&Dvbbs.checkstr(trs("username"))&"','"&Dvbbs.checkstr(trs("topic"))&"','"&Dvbbs.checkstr(trs("body"))&"','"&trs("dateandtime")&"',"&trs("length")&","&trs("rootid")&","&trs("layer")&","&trs("orders")&",'"&trs("ip")&"','"&trs("Expression")&"',"&trs("locktopic")&","&trs("signflag")&","&trs("emailflag")&","&trs("isbest")&","&PostUserID&",'"&trs("isagree")&"',"&trs("isupload")&","&trs("isaudit")&",'"&trs("PostBuyUser")&"','"&Dvbbs.checkstr(trs("UbbList"))&"')") '更新精华'更新上传 'shinzeal add this in 2004/7/4 If ( Not IsNull(Trs("isbest")) And Trs("isbest")<>"" ) Or ( Not IsNull(Trs("isupload")) And Trs("isupload")<>"" ) Then If Trs("isbest")=1 Or Trs("isupload")=1 Then Set myrs=Dvbbs.Execute("select max(announceid) from "&Request.Form("intablename")&" where boardid="&Trs("BoardID")) maxannid=myrs(0) myrs.close Set myrs=Nothing If Trs("isbest")=1 Then Dvbbs.Execute("update dv_besttopic set AnnounceID="&maxannid&" where rootid="&rs("topicid")) If Trs("isupload")=1 Then Dvbbs.Execute("update Dv_Upfile set F_AnnounceID='" & Rs("TopicID") & "|" & maxannid & "' where F_AnnounceID='" & Rs("TopicID") & "|" & Trs("AnnounceID") & "'") End If End If trs.movenext loop end if '删除导出帖子数据表对应数据 Dvbbs.Execute("delete from "&request.form("outTableName")&" where RootID="&rs("TopicID")) '更新主题指定帖子表 Dvbbs.Execute("update dv_topic set PostTable='"&request.form("inTableName")&"' where TopicID="&rs("topicid")) i=i+1 'If (i mod 100) = 0 Then Response.Write "" & VbCrLf Response.Flush 'End If rs.movenext loop end if next set trs=nothing set rs=nothing Response.Write "" dv_suc("转移数据更新成功!") end sub sub search() dim keyword dim totalrec dim n dim currentpage,page_count,Pcount,PostUserID currentPage=request("page") if currentpage="" or not IsNumeric(currentpage) then currentpage=1 else currentpage=clng(currentpage) end if if request("keyword")="" then Errmsg=ErrMsg + "
  • 请输入您要查询的关键字。" dvbbs_error() exit sub else keyword=replace(request("keyword"),"'","") end if if request("searchWhat")="username" then Set Rs=Dvbbs.Execute("Select UserID From Dv_User Where UserName='"&keyword&"'") If Rs.Eof And Rs.Bof Then Errmsg=ErrMsg + "
  • 目标用户并不存在,请重新输入。" dvbbs_error() exit sub Else PostUserID=Rs(0) End If sql="select * from dv_topic where PostTable='"&request("tablename")&"' and PostUserID="&PostUserID&" order by LastPostTime desc" elseif request("topic")="yes" then sql="select * from dv_topic where PostTable='"&request("tablename")&"' and title like '%"&keyword&"%' order by LastPostTime desc" else Errmsg=ErrMsg + "
  • 请选择您查询的方式。" dvbbs_error() exit sub end if %>
    "> "> <% set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1 if rs.bof and rs.eof then response.write "" else rs.PageSize = Dvbbs.Forum_Setting(11) rs.AbsolutePage=currentpage page_count=0 totalrec=rs.recordcount while (not rs.eof) and (not page_count = rs.PageSize) %> <% page_count = page_count + 1 rs.movenext wend dim endpage Pcount=rs.PageCount response.write "" response.write "" response.write "" end if rs.close set rs=nothing response.write "
    说明
    您可以对下列的搜索结果进行转移数据表的操作,不能在相同表内进行转换操作。
    搜索<%=request("tablename")%>结果
    状态 标题 作者 回复 时间 操作
    没有搜索到相关内容。
    <% if rs("locktopic")=1 then response.write "锁定" elseif rs("isvote")=1 then response.write "投票" elseif rs("isbest")=1 then response.write "精华" else response.write "正常" end if %> <%=dvbbs.htmlencode(rs("title"))%> "><%=dvbbs.htmlencode(rs("postusername"))%> <%=rs("child")%> <%=rs("dateandtime")%> ">
      分页: " if currentpage > 4 then response.write "[1] ..." 'shinzeal add searchWhat="&Request("searchWhat")&" in 2004/7/4 end if if Pcount>currentpage+3 then endpage=currentpage+3 else endpage=Pcount end if for i=currentpage-3 to endpage if not i<1 then if i = clng(currentpage) then response.write " ["&i&"]" else response.write " ["&i&"]" 'shinzeal add searchWhat="&Request("searchWhat")&" in 2004/7/4 end if end if next if currentpage+3 < Pcount then response.write "... ["&Pcount&"]" 'shinzeal add searchWhat="&Request("searchWhat")&" in 2004/7/4 end if response.write "所有查询结果" response.write "  " response.write "" response.write "


    " end sub '根据搜索结果更新 sub update3() dim keyword,trs,PostUserID if request.form("tablename")=request.form("totablename") then Errmsg=ErrMsg + "
  • 不能在相同数据表内进行数据转换。" dvbbs_error() exit sub end if if request.form("allsearch")="yes" then if request("keyword")="" then Errmsg=ErrMsg + "
  • 请输入您要查询的关键字。" dvbbs_error() exit sub else keyword=replace(request("keyword"),"'","") end if if request("searchWhat")="username" then 'shinzeal add searchWhat in 2004/7/4 Set Rs=Dvbbs.Execute("Select UserID From Dv_User Where UserName='"&keyword&"'") If Rs.Eof And Rs.Bof Then Errmsg=ErrMsg + "
  • 目标用户并不存在,请重新输入。" dvbbs_error() exit sub Else PostUserID=Rs(0) End If sql="select topicid,title from dv_topic where PostTable='"&request("tablename")&"' and PostUserID="&PostUserID&" order by LastPostTime desc" elseif request("topic")="yes" then sql="select topicid,title from dv_topic where PostTable='"&request("tablename")&"' and title like '%"&keyword&"%' order by LastPostTime desc" else Errmsg=ErrMsg + "
  • 请选择您查询的方式。" dvbbs_error() exit sub end if else if request.form("topicid")="" then Errmsg=ErrMsg + "
  • 请选择要转移的帖子。" dvbbs_error() exit sub end if sql="select topicid,title from dv_topic where PostTable='"&request("tablename")&"' and TopicID in ("&request.form("TopicID")&")" end if 'set rs=Dvbbs.Execute(sql) Set Rs=server.createobject("adodb.recordset") Rs.Open SQL,Conn,1,1 Dim C1,myrs,maxannid C1=Rs.ReCordCount %>  
    下面开始转移论坛帖子资料,预计本次共有<%=C1%>个帖子需要更新
    0%
    <% Response.Flush if rs.eof and rs.bof then Errmsg=ErrMsg + "
  • 没有任何记录可转换。" dvbbs_error() exit sub else do while not rs.eof '取出原表数据 set trs=Dvbbs.Execute("select * from "&request("tablename")&" where rootid="&rs("topicid")&" order by Announceid") if not (trs.eof and trs.bof) then '插入新表 do while not trs.eof If IsNull(trs("postuserid")) Or trs("postuserid")="" Then PostUserID=0 Else PostUserID=trs("postuserid") End If Dvbbs.Execute("insert into "&request("totablename")&"(Boardid,ParentID,username,topic,body,DateAndTime,length,rootid,layer,orders,ip,Expression,locktopic,signflag,emailflag,isbest,PostUserID,isagree,isupload,isaudit,PostBuyUser,UbbList) values ("&trs("boardid")&","&trs("parentid")&",'"&Dvbbs.checkstr(trs("username"))&"','"&Dvbbs.checkstr(trs("topic"))&"','"&Dvbbs.checkstr(trs("body"))&"','"&trs("dateandtime")&"',"&trs("length")&","&trs("rootid")&","&trs("layer")&","&trs("orders")&",'"&trs("ip")&"','"&trs("Expression")&"',"&trs("locktopic")&","&trs("signflag")&","&trs("emailflag")&","&trs("isbest")&","&PostUserID&",'"&trs("isagree")&"',"&trs("isupload")&","&trs("isaudit")&",'"&trs("PostBuyUser")&"','"&Dvbbs.checkstr(trs("UbbList"))&"')") '更新精华'更新上传 'shinzeal add this in 2004/7/4 If ( Not IsNull(Trs("isbest")) And Trs("isbest")<>"" ) Or ( Not IsNull(Trs("isupload")) And Trs("isupload")<>"" ) Then If Trs("isbest")=1 Or Trs("isupload")=1 Then Set myrs=Dvbbs.Execute("select max(announceid) from "&Request.Form("totablename")&" where boardid="&Trs("BoardID")) maxannid=myrs(0) myrs.close Set myrs=Nothing If Trs("isbest")=1 Then Dvbbs.Execute("update dv_besttopic set AnnounceID="&maxannid&" where rootid="&Rs("TopicID")) If Trs("isupload")=1 Then Dvbbs.Execute("update Dv_Upfile set F_AnnounceID='" & Rs("TopicID") & "|" & maxannid & "' where F_AnnounceID='" & Rs("TopicID") & "|" & Trs("AnnounceID") & "'") End If end if trs.movenext loop end if '删除原表该帖子数据 Dvbbs.Execute("delete from "&request("tablename")&" where rootid="&rs("topicid")) '更新该主题表名 Dvbbs.Execute("update dv_topic set PostTable='"&request("totablename")&"' where topicid="&rs("topicid")) i=i+1 'If (i mod 100) = 0 Then Response.Write "" & VbCrLf Response.Flush 'End If rs.movenext loop end if set trs=nothing set rs=nothing Response.Write "" dv_suc("转移数据更新成功!") end sub %>